var http = require('http')
var fs = require('fs')
var url = require('url')
var template = require('art-template')

var comments = [{name: '张三', message: '今天天气不错！', dateTime: '2015-10-16'}, {name: '张三2', message: '今天天气不错！', dateTime: '2015-10-16'}]


http
    .createServer(function (req, res) {                                        // 简写方式，该函数会直接被注册为 server 的 request 请求事件处理函数
        var parseObj = url.parse(req.url, true)                                // 第二个参数为 true 表示直接将查询字符串转为一个对象（通过 query 属性来访问）
        var pathname = parseObj.pathname                                        // 单独获取不包含查询字符串的路径部分（该路径不包含 ? 之后的内容）
        var comment  = parseObj.query

        if (pathname === '/') {
            fs.readFile('./views/index.html', function (err, data) {
                if (err) {
                    return res.end('404 Not Found.')
                }
                var htmlStr = template.render(data.toString(), {             //模板渲染，有变量的情况
                    comments: comments
                })
                res.end(htmlStr)
            })
        } else if (pathname === '/post') {

            fs.readFile('./views/post.html', function (err, data) {
                if (err) {
                    return res.end('404 Not Found.')
                }
                res.end(data)
            })
        } else if (pathname.indexOf('/public/') === 0) {
            // 统一处理：
            //    如果请求路径是以 /public/ 开头的，则我认为你要获取 public 中的某个资源
            fs.readFile('.' + pathname, function (err, data) {
                if (err) {
                    return res.end('404 Not Found.')
                }
                res.end(data)
            })
        } else if (pathname === '/pinglun') {
            //       当用户重新请求 / 的时候，我数组中的数据已经发生变化了，所以用户看到的页面也就变了

            comment.dateTime = '2017-11-2 17:11:22'
            comments.unshift(comment)

            // 如果客户端发现收到服务器的响应的状态码是 302 就会自动去响应头中找 Location ，然后对该地址发起新的请求
            res.statusCode = 302
            res.setHeader('Location', '/')
            res.end()
        } else {
            fs.readFile('./views/404.html', function (err, data) {
                if (err) {
                    return res.end('404 Not Found.')
                }
                res.end(data)
            })
        }
    })
    .listen(3000, function () {
        console.log('running...')
    })


//    使用框架的目的就是让我们更加专注于业务，而不是底层细节
